package com.henry.chatkit.messages

import com.alibaba.fastjson.JSON
import com.henry.chatkit.MessageType
import com.henry.chatkit.utils.log
import java.util.*


object MessageExt {

    fun buildTextMessage(text: String): MessageInfo {
        val msg = MessageInfo(MessageType.TEXT, true)
        msg.msgTime = Date().time
        msg.text = text
        return msg
    }

    fun buildImageMessage(path: String, width: Int = 0, height: Int = 0): MessageInfo {
        val msg = MessageInfo(MessageType.IMAGE, true)
        msg.msgTime = Date().time

        msg.path = path

        msg.imgWidth = width
        msg.imgHeight = height

        return msg
    }

    fun buildVideoMessage(path: String): MessageInfo {
        val msg = MessageInfo(MessageType.VIDEO, true)
        msg.msgTime = Date().time
        return msg
    }

    fun buildAudioMessage(path: String, duration: Int): MessageInfo {
        val msg = MessageInfo(MessageType.AUDIO, true)
        msg.msgTime = Date().time
        msg.duration = duration
        msg.path = path
        return msg
    }

    fun buildFileMessage(path: String): MessageInfo {
        val msg = MessageInfo(MessageType.FILE, true)
        msg.msgTime = Date().time
        return msg
    }

    fun buildCustomMessage(objects: Any): MessageInfo {
        val msg = MessageInfo(MessageType.CUSTOM, true)
        msg.msgTime = Date().time
        val jsonObject: String = JSON.toJSONString(objects)
        log("buildCustomMessage: $jsonObject")
        msg.data = jsonObject
        return msg
    }

    fun buildSystemMessage(text: String): MessageInfo {
        val msg = MessageInfo(MessageType.SYSTEM, true)
        msg.msgTime = Date().time
        msg.text = text
        return msg
    }

}